package com.tedu.API.list;

import org.junit.Test;

import javax.xml.stream.XMLEventReader;
import java.util.HashSet;
import java.util.Set;

/**
 * Set集合是Collection集合子接口
 * Set集合接口：无需，无下表，元素不可重发【唯一性】
 * Set集合方法与Collection集合方法【使用一致】
 * add()  remove()  contains()   size()   clear()
 * 使用Iterator迭代器遍历
 * Set集合--接口--无法创建对象---实现类；
 * HanhSet：：由哈希算法实现：不保证元素顺序，不允许元素重复，可以存null
 * LinkedHashSet：【方法与HashSet一致】由哈希算法实现，保持元素顺序
 *                 不允许元素重复，可以存null
 * TreeSet【算法：红黑树】：不可以存null，按照元素自然顺序或者指定比较器进行元素存储
 */
public class SetAPI {
    @Test
    public void testSet(){
        Set<String> set=new HashSet<>();
        set.add("整鹿尾儿");set.add("蒸羊羔");
        set.add("烧花鸭");  set.add("烧子鹅");
        set.add("烧花鸭");  set.add(null);
        System.out.println("Set集合："+set);
        boolean b=set.contains("烧花鸭");
        System.out.println("判断Set集合是否存在【烧花鸭】元素"+b);
        System.out.println("判断Set集合长度："+set.size());
        //Iterator遍历  set  集合   元素
        //1.通过set集合调用 iterator（）  获取迭代器实例：Iterator
        Set<String> set1=new HashSet<>();

        //2.Iterator遵循：问，取，删     删掉”烧子鹅“元素
        while(it.hasNext()){//问：set集合有没有元素---有”true
            String str=it.next();//取set集合元素
            //null  引用类型默认值   不是字符串
            //判断明确的值  必须   ==
            //判断对象      使用   “字符串”.equals（str） 实值
            //                   obj.equals（add）  地址值
            if(str==null){//如果“烧子鹅”等于“烧子鹅”元素
                it.remove();//删
            }
            System.out.println("set集合："+set);

        }
    }
}